Displaying a user interface in a dedicated display area

ABSTRACT

Some embodiments are directed to techniques for displaying a user interface of an application program on a display device. The display device may be partitioned into two portions, such that the user interface and a computer desktop are displayed in separate portions of the display. As a result, the user interface does not overlap or obscure any portion of the displayed desktop.

BACKGROUND

Many modern operating systems executing on a computer provide a virtualarea, often called a “desktop,” that serves as a user interface intowhich visual content such as images, icons, menus, or application userinterfaces may be drawn or visually rendered. The desktop, including itsdrawn visual content, may then be displayed onto one or more displaydevices connected to the computer.

A typical computer desktop may be of limited use, however, to visuallyimpaired users, who may not be able to adequately perceive content as itis typically displayed onto a display device. Accordingly, some usersuse Accessibility Technology (AT) software applications, such asZoomText™ 9.1 Magnifier/Reader, developed by Ai Squared, Inc., ofManchester Center, Vt., that facilitate visually impaired users' use ofcomputers. For example, such AT applications can apply enhancements,such as color enhancements, highlighting, magnification, or otherenhancements, to a computer desktop to help a visually impaired usermore easily perceive displayed content.

In one mode of operation, as illustrated by FIG. 1, an AT softwareapplication may magnify a portion (also referred to as a “viewport”) ofa computer desktop 101. In FIG. 1, the portion of the desktop insideviewport 103, rather than the full desktop area of desktop 101, ismagnified and displayed on a display device 105. In the example of FIG.1, although the viewport 103 is only a portion of the full area ofdesktop 101, it occupies the full display area of display device 105,thereby allowing for magnification of the content in the viewport.

The boundaries defining the viewport may be adjusted, thereby allowing auser to move a viewport to magnify or otherwise enhance a differentportion of the desktop. The viewport may be moved, for example, when auser causes the mouse cursor to move to the edge of the current viewportboundary, which is taken as an indication that the user desires theviewport to be moved to display visual content beyond that edgeboundary, and may be increased or decreased in size depending on themagnification level selected by the user.

SUMMARY

Some embodiments are directed to a method, performed in a computer thathas at least one hardware processor and at least one tangible memorycoupled to the at least one hardware processor, wherein the tangiblememory stores computer instructions for an application program, whereinthe at least one hardware processor is configured to execute thecomputer instructions for the application program, and wherein thecomputer is configured to display a computer desktop on a display devicethat has a display area and is coupled to the computer, of displaying auser interface for the application program on the display device. Themethod comprises: displaying a first portion of the computer desktop onthe entirety of the display area of the display device; receiving anindication to display the user interface on the display device; inresponse to receiving the indication, partitioning the display area intoa first display portion that is dedicated for displaying the userinterface and a second display portion for displaying at least a portionof the computer desktop; displaying the user interface in the firstdisplay portion of the display area; and displaying at least some of thefirst portion of the computer desktop in the second display portion ofthe display area.

Some embodiments are directed to at least one computer readable storagemedium, encoded with instructions that, when executed by a computer thatis configured to display a computer desktop, perform a method ofdisplaying a user interface for an application program on a displaydevice that is coupled to the computer and has a display area. Themethod comprises: displaying a first portion of the computer desktop onthe entirety of the display area of the display device; receiving anindication to display the user interface on the display device; inresponse to receiving the indication, partitioning the display area intoa first display portion that is dedicated for displaying the userinterface and a second display portion for displaying at least a portionof the computer desktop; displaying the user interface in the firstdisplay portion of the display area; and displaying at least some of thefirst portion of the computer desktop in the second display portion ofthe display area.

Some embodiments are directed to a computer configured to display acomputer desktop on a display device that has a display area. Thecomputer comprises: at least one tangible memory that stores computerinstructions for an application program; and at least one hardwareprocessor, coupled to the at least one tangible memory, that executesthe computer instructions to: display a first portion of the computerdesktop on the entirety of the display area of the display device;receive an indication to display the user interface on the displaydevice; in response to receiving the indication, partition the displayarea into a first display portion that is dedicated for displaying theuser interface and a second display portion for displaying at least aportion of the computer desktop; display the user interface in the firstdisplay portion of the display area; and display at least some of thefirst portion of the computer desktop in the second display portion ofthe display area.

The foregoing is a non-limiting summary of the invention, which isdefined by the attached claims.

BRIEF DESCRIPTION OF DRAWINGS

The accompanying drawings are not intended to be drawn to scale. In thedrawings, each identical or nearly identical component that isillustrated in various figures is represented by a like numeral. Forpurposes of clarity, not every component may be labeled in everydrawing. In the drawings:

FIG. 1 is a diagram of a computer desktop, a portion of which ismagnified and displayed on a display device;

FIG. 2A is a diagram of a computer desktop that includes anaccessibility technology (AT) software application toolbar/userinterface (UI), wherein a portion of the desktop that does not includethe toolbar/UI is magnified and displayed on a display device;

FIG. 2B is a diagram of a computer desktop that includes anaccessibility technology (AT) software application toolbar/UI, wherein aportion of the desktop on which the toolbar/UI is overlaid is magnifiedand displayed on a display device;

FIG. 2C is a diagram of a computer desktop that includes anaccessibility technology (AT) software application toolbar/UI, wherein aportion of the desktop on which the toolbar/UI is overlaid is magnifiedat a greater magnification level than shown in FIG. 2B, and is displayedon a display device;

FIG. 3A is a diagram of a computer desktop, a portion of which ismagnified and displayed on a display device, which may be partitioned tohave a separate portion for displaying a toolbar/UI, in accordance withsome embodiments;

FIG. 3B is a diagram of display that is partitioned into a first portionfor displaying a toolbar/UI, and a second portion for displaying visualcontent from a desktop, wherein the bottom portion of the visual contentfrom the desktop is removed to make room for the first portion, inaccordance with some embodiments;

FIG. 3C is a diagram of the computer desktop of FIG. 3A, in which thesize of the viewport has been reduced to remove the content that waspreviously in the bottom portion of the viewport, in accordance withsome embodiments;

FIG. 3D is a diagram of a display that is partitioned into a firstportion for displaying a toolbar/UI, and a second portion for displayingvisual content from a desktop, wherein the top portion of the visualcontent from the desktop is removed to make room for the first portion,in accordance with some embodiments;

FIG. 3E is a diagram of the computer desktop of FIG. 3A, in which thesize of the viewport has been reduced to remove the content that waspreviously in the top portion of the viewport, in accordance with someembodiments;

FIG. 3F is a diagram of a display that is partitioned into a firstportion for displaying a toolbar/UI, and a second portion for displayingvisual content from a desktop, wherein a portion of the top of thevisual content and a portion of the bottom of the visual content areremoved to make room for the first portion, in accordance with someembodiments;

FIG. 3G is a diagram of the computer desktop of FIG. 3A, in which thesize of the viewport has been reduced to remove some of the content thatwas previously in the top portion of the viewport and some of thecontent that was previously in the bottom portion of the viewport, inaccordance with some embodiments;

FIG. 3H is a diagram of a display that is partitioned into a firstportion for displaying a toolbar/UI, and a second portion for displayingvisual content from a desktop, wherein the portion of the computerdesktop including a focus item has been kept in the reduced-sizeviewport, in accordance with some embodiments;

FIG. 3I is a diagram of computer desktop and a display that ispartitioned into a first portion for displaying a toolbar/UI, and asecond portion for displaying visual content from a desktop, wherein aviewport on the computer desktop is moved, changing the content that isdisplayed in the second portion of the display, in accordance with someembodiments;

FIG. 4A is a diagram of a display that is partitioned into a firstportion for displaying a toolbar/UI, and a second portion for displayingvisual content from a desktop, wherein the first portion is positionedat the bottom of the display, in accordance with some embodiments;

FIG. 4B is a diagram of a display that is partitioned into a firstportion for displaying a toolbar/UI, and a second portion for displayingvisual content from a desktop, wherein the first portion is positionedat the left side of the display, in accordance with some embodiments;

FIG. 4C is a diagram of a display that is partitioned into a firstportion for displaying a toolbar/UI, and a second portion for displayingvisual content from a desktop, wherein the first portion is positionedat the right side of the display, in accordance with some embodiments;

FIG. 4D is a diagram of a display in which a toolbar/UI is overlaid onthe desktop content, in accordance with some embodiments;

FIG. 5A is a diagram of a display that is partitioned into a firstportion for displaying a toolbar/UI, and a second portion for displayingvisual content from a desktop, wherein the size of the first portion ofthe display is determined based on the size and magnification level ofthe toolbar/UI, in accordance with some embodiments;

FIG. 5B is a diagram of a display that is partitioned into a firstportion for displaying a toolbar/UI, and a second portion for displayingvisual content from a desktop, wherein the size of the first portion ofthe display is increased in response to an increase in the size and/ormagnification level of the toolbar/UI, in accordance with someembodiments;

FIG. 5C is a diagram of a display that is partitioned into a firstportion for displaying a toolbar/UI, and a second portion for displayingvisual content from a desktop, wherein the toolbar/UI displayed in thefirst portion is reconfigured in response to an increase in the sizeand/or magnification level of the toolbar/UI, in accordance with someembodiments;

FIG. 5D is a diagram of a display that is partitioned into a firstportion for displaying a toolbar/UI, and a second portion for displayingvisual content from a desktop, wherein the toolbar/UI displayed in thefirst portion is reconfigured in response to an increase in the sizeand/or magnification level of the toolbar/UI and scrolled to displaycontrols not originally shown in the reconfigured toolbar, in accordancewith some embodiments;

FIG. 6 is a flowchart of process that may be performed by an AT softwareapplication, in some embodiments, to render a toolbar/UI for the ATsoftware application on a display; and

FIG. 7 is a diagram of computer system in which, in some embodiments,the process of FIG. 6 may be performed.

DETAILED DESCRIPTION

Some AT software applications, including the aforementioned ZoomText™9.1 Magnifier/Reader, provide a toolbar or other type of user interface(hereinafter, “toolbar/UI”) by which a user may configure accessibilitysettings relating to the way that visual content to be displayed on adisplay device is enhanced. For example, such a toolbar/UI may providecontrols via which a user may adjust the magnification level at whichcontent is to be magnified, may adjust a magnification type to be usedin displaying content, may select a predefined color scheme to be usedor may define a custom color scheme, may adjust cursor or pointerenhancements, may adjust focus enhancements, and/or may control otherconfiguration settings of the AT software application.

The inventors have recognized that when a portion of a computer desktopdefined by a viewport is magnified by an accessibility technology (AT)software application, the toolbar/UI for adjusting the settings of theAT software application may be outside of the viewport. For example, asshown in FIG. 2A, desktop 101 includes a toolbar/UI 201 for configuringsettings of the AT software application. However, because viewport 103does not include the portion of desktop in which toolbar/UI 201 islocated, toolbar/UI 201 is not displayed on display 105. Thus, theinventors have recognized that, in such situations, if a user wishes toadjust settings for the AT software application using toolbar/UI 201,the user may have to move the viewport to the location on the desktop atwhich toolbar/UI 201 is located. The inventors have further recognizedthat this may be inconvenient for the user because the user may havedifficulty finding the location of the toolbar/UI on the desktop,particularly at high magnification levels where only a small portion ofthe desktop is displayed on the display at any given time. In addition,the inventors have appreciated that, when a user is working in anapplication program and wishes to access the toolbar/UI, the user may,after adjusting a setting in the toolbar/UI, wish to return to thelocation in the application program at which he or she was previouslyworking. Thus, even after returning to the location on the desktop atwhich the toolbar/UI is located, the user may have difficulty locatingthe place in the application program at which he or she was previouslyworking.

Some AT software applications, including the aforementioned ZoomText™9.1 software application, provide a hotkey combination or other keyboardselection that, when input by a user, causes the viewport to be moved tothe portion of the desktop at which the toolbar/UI is located and, ifthe toolbar/UI is underneath another application window, causes thetoolbar to be displayed on top of the other application window. Forexample, in the ZoomText™ 9.1 software application, inputting, via thekeyboard, a hotkey combination of CTRL+SHIFT+U, causes the viewport toautomatically move to the location of the desktop of the ZoomText™ userinterface and causes the user interface window to be displayed on top ofany other windows. FIG. 2B shows desktop 101 and display 105 after auser has input such a hotkey combination. As shown in FIG. 2B, viewport103 has been moved from its position on desktop 101 in FIG. 2A to theposition at which toolbar/UI 201 is located. Thus, the portion oftoolbar/UI 201 inside viewport 103 and the portion of desktop 101 insideviewport 103 that is not obscured by toolbar/UI 201 are displayed ondisplay 105.

The inventors have recognized that, while such hotkey combinationsfacilitate locating the toolbar/UI on a magnified desktop, a user stillmay have difficulty returning to the portion of the desktop at which heor she was working prior to accessing the toolbar/UI. In addition, theinventors have recognized that, because the toolbar/UI is displayed in awindow, the toolbar/UI window may be overlaid on other applicationprogram windows, thus obscuring the content of those windows orobscuring other desktop content. For example, as shown in FIG. 2B,toolbar/UI 201 obscures the text “EFG” on desktop 101, which may be, forexample, text in a word processing application program. Thus, forexample, if a user is working in an application program when thetoolbar/UI is accessed (e.g., via a hotkey combination), the toolbar/UImay be displayed over the area in which the user was working.

Moreover, prior art AT software applications magnify the toolbar/UI atthe same level of magnification as all other magnified content on acomputer desktop. That is, because the toolbar/UI is implemented in awindow like other application programs, such AT software applicationstreat the toolbar/UI in the same manner as other visual content on thecomputer desktop. As such, the toolbar/UI is magnified in the samemanner as other visual content. For example, if such a prior art ATsoftware application is configured to magnify content at a 4× level, thetoolbar/UI is also magnified at a 4× level. The inventors haverecognized that, in magnified displays, the entire toolbar/UI may notfit within the boundaries of the viewport. This problem is exacerbatedat high magnification levels, when only a small portion of thetoolbar/UI may fit in the boundaries of the viewport. For example, asshown in FIG. 2C, only a small portion of toolbar/UI 201 fits within theboundaries of viewport 103. The inventors have recognized that this maypresent difficulties for the user in accessing the toolbar/UI becausethe portion of the toolbar/UI that the user wishes to access may beoutside the boundaries of the viewport. Thus, the user may have tomanually cause the viewport to be moved to the portion of the toolbar/UIthat he or she wishes to access.

Thus, some embodiments address the above-discussed shortcomings of theprior art. However, while some embodiments may address each of theseshortcomings, not every embodiment addresses all of these shortcomings.In particular, some embodiments may only address some of theseshortcomings, and some embodiments may not address any of theabove-discussed shortcomings of the prior art, as the invention is notlimited to addressing all or any of the above-discussed shortcomings.

Some embodiments are directed to techniques for rendering an AT softwareapplication toolbar/UI in a separate portion of a display from thecontent of the computer desktop. That is, while the user interfaces forother application programs may be rendered on the computer desktop, thetoolbar/UI for the AT software application may be rendered in a separateportion of the display from the portion of the display in which thecomputer desktop (or a portion thereof) is displayed.

In some embodiments, when a user is working in an environment that ismagnified by an AT software application, the user may input a command toaccess the toolbar/UI. When such a command is received by the ATsoftware application, rather than causing the viewport to beautomatically moved to the desktop location of the toolbar/UI, the ATsoftware application may partition the display into two portions,visually render the toolbar/UI in one portion of the display and causeall or a portion of the viewport content to be displayed in the otherportion of the display. Thus, the toolbar/UI is not overlaid on thedesktop content, but is rather displayed in a separate display area fromthe desktop content. When the toolbar/UI is displayed on a portion ofthe display, the area available to display desktop content within theviewport boundaries is reduced. Thus, the entirety of the desktopcontent that is within the viewport boundaries may not be able to bedisplayed in the area that is available to display this content. Assuch, in some embodiments, the size of the viewport may be reduced tomake room on the display for the toolbar/UI, while maintaining orincreasing the magnification level at which the desktop content isdisplayed.

For example, FIG. 3A shows a desktop 101 in which the portion of desktop101 within the boundaries of viewport 103 is displayed on display device105. The portion of desktop 101 that is displayed on display 105includes the text “JKL” and “STU,” with a cursor 301 following theletter “S.” If a user inputs a command to access the toolbar/UI, the ATsoftware application may cause the toolbar/UI to be rendered on displaydevice 105. Because the toolbar/UI occupies some space on display device105 and is not overlaid on the visual content on display device 103, theAT software application may reduce the size of viewport 103 so thatthere is room on the display to display the toolbar/UI.

The amount by which the size of viewport 103 is reduced may depend onthe size and magnification level of the toolbar. That is, in someembodiments, when a user command to access the toolbar/UI is received, afirst portion of the display may be reserved for rendering thetoolbar/UI. The size of the first portion of the display may depend onthe size and magnification level of the toolbar. The remainder of thedisplay (i.e., the second portion of the display) may be used to displaythe content of the viewport 103. As such, when the toolbar is displayed,the area of the display available to display the content of viewport 103is smaller. Thus, the size of viewport 103 may be reduced so that thecontent of viewport 103 fits in this smaller display area (i.e., thesecond portion of the display). The amount by which the size of viewport103 is reduced may be, for example, an amount such that the content ofthe reduced-size viewport entirely fits in the second portion of thedisplay. When an indication to remove the toolbar/UI from the display isreceived, the toolbar/UI may be removed from the display and theentirety of the visual content of viewport 103 may be displayed on thedisplay.

Any suitable portion of the visual content of viewport 103 may beexcluded from the reduced-size viewport to make room for the toolbar/UIon the display. In some embodiments, the portion of the visual contentof the viewport that is excluded may be determined based on auser-configurable setting of the AT software application. FIGS. 3B-3Eillustrate several possibilities, that may be used in some embodiments,for selecting a portion of the visual content of the viewport to beexclude from the reduced-size viewport to make room for rendering atoolbar/UI. It should be understood that these are only several examplesof many possibilities, and that the various other techniques forselecting the portion of the visual content of a viewport to be kept ina reduced-size viewport may be employed.

FIG. 3B shows display 105, having a first portion 302 and a secondportion 304. The dashed line in FIG. 3B (and FIGS. 3D, 3F, 3H, and 3I)is shown merely to illustrate that the display is divided into twoportions, and does not form a part of the visual content that isrendered on display 105. Portion 302 of display 105 is used forrendering a toolbar/UI 305 that includes various controls 307 a, 307 b,307 c, 307 d, and 307 e for adjusting settings of the AT softwareapplication. The controls 307 may include any suitable graphical inputcomponent, including, for example, a button, a slider, an input textbox, a pull down or other type of menu, and/or any other suitable typeof control. In addition, while toolbar/UI 305 is shown in FIGS. 3B-3E toinclude five controls, the invention is not limited in this respect, asany suitable number of controls may be included, and these controls mayadjust or configure any suitable aspect of the functionality of the ATsoftware application.

The remainder of display 105 (i.e., portion 304) is used to render thevisual content of viewport 103, shown in FIG. 3A, after it has beenreduced in size. In the example of FIG. 3B, the vertical height ofviewport 103 has been reduced to exclude the content in the bottomportion of viewport 103 in order to fit the rest of the content ofviewport 103 in portion 304 of display 105. FIG. 3C shows display 105having a viewport 103 a, which represents viewport 103 of FIG. 3A afterit has been reduced in size to exclude the content in the bottom portionof viewport 103. For example, assuming that the content of viewport 103is displayed at 4× magnification, if viewport 103 is 400 pixels high,and there is room to display 800 vertical pixels in portion 304 ofdisplay 105, then viewport may be reduced in height such that the bottom200 pixels of the viewport 103 are excluded from viewport 103 a in FIG.3C. As such, only the top 200 vertical pixels of each row (which is 800vertical pixels at 4× magnification) of viewport 103 remain in thereduced-size viewport 103 a, and these pixels are displayed in portion304 of display 105.

In this example, the portion at the bottom of viewport 103 that does notfit in portion 304 and that is excluded from viewport 103 a is theportion that includes the text, “STU.” Thus, as shown in FIG. 3B, thisportion of the viewport is not displayed in portion 304 of display 105and, as shown in FIG. 3C, the text “STU” is not included in reduced-sizeviewport 103 a.

In the example of FIG. 3D, viewport 103 is reduced in height so that thetop portion of viewport 103 is excluded from the reduced-size viewport.FIG. 3E shows a reduced-size viewport 103 b which represents viewport103 of FIG. 3A after it has been reduced in size in this manner. Asshown in FIG. 3E, reduced-size viewport 103 b includes the content inthe bottom portion of viewport 103 of FIG. 3A. When the size of viewport103 is reduced in this manner, the portion at the top of viewport 103that does not fit in reduced-size viewport 103 b is the portion thatincludes the text “JKL.” As such, as shown in FIG. 3D, the text “STU,”(i.e., the content of reduced-size viewport 103 b) is displayed inportion 304 of display 105.

In the example of FIG. 3F, the size of viewport 103 is reduced in heightby excluding, in the reduced-size viewport, equal portions of the visualcontent of viewport 103 from the top and bottom, such that the middlesection of the content of viewport 103 is included in the reduced-sizeviewport and displayed in portion 304.

FIG. 3G shows a reduced-size viewport 103 c which represents viewport103 of FIG. 3A after it has been reduced in size in this manner. Asshown in FIG. 3G, viewport 103 c includes a portion of the “JKL” and aportion of the text “STU.” Thus, as shown in FIG. 3F, a portion of thetext “JKL” and a portion of the text “STU' are displayed in portion 304of display 105.

In the example of FIG. 3H, when the size of viewport 103 is reduced, theportion of the content of viewport 103 to be kept in the reduced-sizeviewport is selected based on the location of the user's focus, asindicated by a focus item. For example if, within viewport 103 there isa focus item (e.g., a text cursor), the portion of the content ofviewport 103 that is included in the reduced-size viewport may beselected to include the focus item. As shown in FIG. 3A, cursor 301 islocated after the text character “S.” Thus, as shown in FIG. 3H, thisportion of viewport 103 around cursor 301 may be kept in thereduced-size viewport. A number of techniques are possible fordetermining the size and position of the reduced-size viewport so thatthe focus item is included in the reduced-size viewport content. Forexample, the size and position of the reduced-size viewport may beselected such that the focus item (e.g., the text cursor) is kept in thecenter of the viewport. Alternatively, the size and position of thereduced-size viewport may be selected to minimize the amount of movementin the view (sometimes referred to as “edge tracking”). Yet anotherpossibility is to adjust the size and position of the reduced-sizeviewport such that the focus item is close to the toolbar. Thus, forexample, if there is room for three lines of text in the reduced-sizeviewport, and the toolbar/UI is displayed at the top of the display, thetop line of text in the viewport would be the line that includes thefocus item.

Another possible technique for selecting the portion the portion of thecontent of viewport 103 to be kept in the reduced-size viewport based onthe user's focus, is to maintain information about the most recent event(i.e., prior to displaying the toolbar/UI) that caused the viewport tomove. When deciding what content to include the reduced-size viewport,this information may be used to determine the area of intersection ofthe viewport and the last event location, and to keep this area (or atleast a portion thereof) in the reduced-size viewport.

The examples above describe techniques for reducing the size of thedesktop viewport to make room on the display for rendering a toolbar/UI,while maintaining or increasing the magnification level of the displayedcontent desktop. However, in some embodiments room on the display forrendering a toolbar/UI may be made by keeping the size of the viewportthe same, but decreasing the magnification level at which the viewportcontent is displayed. In this manner, once the toolbar/UI is rendered onthe display, the same desktop area continues to be displayed on thedisplay, but a decreased magnification level and in a smaller portion ofthe display.

If, after the indication to render the toolbar/UI is received, butbefore the indication to remove the toolbar/UI is received, the useradjusts the location of viewport 103, the content displayed in portion304 may change to reflect the content of viewport 103 at its newlocation, while the toolbar remains displayed in portion 302. Forexample, as shown in FIG. 3I, if the location of viewport 103 a in FIG.3C is moved to the right (i.e., relative to its location in FIG. 3C),such that it includes the text “MNO,” the content that is displayed inportion 304 of desktop 105 changes to display text from the new locationof the viewport.

In the examples of FIGS. 3A-3I, portion 302 (which is used fordisplaying the toolbar/UI) of display 105 is displayed at the top of thedisplay, and portion 304 (which is used to display visual content ofviewport 103) is at the bottom of the display. However, the invention isnot limited in this respect, as portions 302 and 304 may be any suitableportions of the display device, and may be positioned relative to eachother in any of a variety of ways. For example, in some embodiments, asshown in FIG. 4A, portion 302 may be the bottom portion of the displaydevice and portion 304 may be the top portion. In some embodiments, asshown in FIG. 4B, portion 302 may be the left portion of the displaydevice and portion 304 may be the right portion. In some embodiments, asshown in FIG. 4C, portion 302 may be the right portion of the displaydevice and portion 304 may be the left portion. In some embodiments, theportion of the display that is used for displaying the toolbar/UI may beuser-configurable setting. Thus, for example, a user of the AT softwareapplication may configure the AT software application to render thetoolbar at the top, bottom, left, right, or any other suitable portionof the display, and the rest of the display may be used for displayingvisual content in the viewport.

In addition, in some embodiments, rather than partitioning the displayarea and designating a separate portion of the partitioned display areafor displaying the toolbar/UI, the toolbar/UI may be overlaid on thedesktop content. For example, as shown in FIG. 4D, the toolbar/UI isoverlaid on the area of the display that used to display desktopcontent. In such embodiments, the toolbar/UI may remain displayed untiluser input is received or some other event occurs that indicates thatthe toolbar/UI is to be removed. In situations in which the desktopcontent underneath the toolbar/UI is displayed at a magnification levelgreater than 1×, the desktop content may be scrolled underneath thetoolbar/UI, such that a user may access the entire desktop, while thetoolbar/UI remains displayed at the same location on the display.

Moreover, in the examples of FIGS. 3A-3I, the toolbar/UI is shown ashaving a rectangular shape. However, this shape is provided merely as anexample, as the toolbar/UI may take any of a variety of shapes orgeometries. For example, in some embodiments, the toolbar/UI may beelliptical. In some such embodiments, portion 302 of the display may beshaped elliptically, and portion 304 may be shaped to occupy theremainder of the display area outside the elliptically shaped portion302.

It should be appreciated that the any number of a variety of possiblecontrols may be provided in the toolbar/UI. For example, the controls inthe toolbar/UI may control aspects of how the desktop content (e.g., thecontent displayed in portion 304) is displayed. That is, the controls inthe toolbar/UI may be used to control a magnification level at which thedesktop content is to be magnified, to adjust a magnification type to beused in displaying the desktop content, to select color enhancements tobe applied to the desktop content, such as selecting a predefined colorscheme or defining a custom color scheme to be applied to the desktopcontent, to adjust cursor or pointer enhancements, and/or to control avariety of other aspects relating to how the desktop content isdisplayed. In addition, the toolbar/UI may provide controls that relateto how the toolbar/UI is displayed (i.e., independently of enhancementsapplied to the displayed desktop content). For example, the toolbar/UImay provide a control to control the color enhancements of thetoolbar/UI independent of the color enhancements that are applied to thedesktop content.

The inventors have recognized that, in many situations, a visuallyimpaired user may not need the same level of magnification for thetoolbar/UI as for other content on the desktop. That is, the inventorshave recognized that because a user may become familiar with the layoutand functionality of the toolbar/UI after using it for a period of time,the user may not need to see the toolbar/UI as well in order to be ableto access and use it effectively. In addition, icons in the toolbar/UImay be drawn using vector drawn images. Thus, when the toolbar/UI ismagnified, the images for the icons may be redrawn by increasing thesize of the vectors that make up the images using a scaling factor. Thisresults in crisp icons, even at high levels of magnification. Becausethe icons are crisp, a visually impaired user may need lessmagnification in order to be able to see the icons in the toolbar/UI.Thus, in some embodiments, the magnification of the toolbar/UI may beadjusted independently of the magnification for the rest of the visualcontent that is displayed. This enables the user to, for example,specify a lower magnification level for the toolbar than the rest of thevisual content on the desktop.

For example, a user with low vision may prefer 8× magnification (i.e.,where content is displayed at 8 times its size for a given desktopsize/resolution) for viewing most visual content displayed on thedesktop, but may be able to effectively access and use a toolbar/UI thatis magnified at 4× magnification. Thus, in some embodiments, the ATsoftware application may provide the user with the capability (e.g., viathe toolbar/UI) to independently adjust the magnification level of thetoolbar/UI and the magnification level for the rest of the visualcontent on the desktop. As explained above in connection with thediscussion of FIGS. 3A-3I, the size of portion 302 of display 105 thatis used for displaying the UI/toolbar depends on the size andmagnification level of the UI/toolbar. By reducing the magnificationlevel of the UI/toolbar, its size is decreased and, as a result, portion302 of display 105 is smaller. This leaves a greater portion of display105 to be occupied by portion 304, which allows more of the visualcontent of viewport 103 to be kept in the reduced-size viewport anddisplayed in portion 304. Thus, by providing the user with the abilityto independently adjust the magnification level of the toolbar/UI, whenthe magnification level of the toolbar/UI is decreased more display areabecomes available for displaying desktop content, allowing the size ofthe reduced-size viewport to be increased, while still maintaining theuser's preferred magnification level of the desktop content.

In the embodiments discussed above in connection with FIGS. 3A-3I, asthe size of the toolbar/UI increases (e.g., as a result of increasingthe magnification level), the size of portion 302 of display 105 isincreased to accommodate the increased size of the toolbar/UI. As thesize of portion 302 increases, the size of portion 304 decreases, andless of the visual content of viewport 103 may be kept in thereduced-size viewport and displayed in portion 304. The inventors haverecognized that if the size of portion 302 becomes too large, the sizeof portion 304 may become so small that it is difficult for a user toeffectively use. Thus, in some embodiments, the AT software applicationmay limit the level of magnification of the toolbar/UI so that thetoolbar/UI (and portion 302 of the display area) does not occupy morethan a threshold percentage of the available display area on display105. Any suitable threshold may be used, as the invention is not limitedin this respect. For example, in some embodiments, the AT softwareapplication may limit the level of magnification of the toolbar/UI sothat the toolbar/UI (and portion 302) does not occupy more than fiftypercent of the display area on display 105.

Thus, for example, when a user inputs an increased magnification levelfor the toolbar/UI, the AT software application may determine thedisplay area of the display device by multiplying the screen height ofthe display device by the screen width of the display device and maycalculate the area of the toolbar/UI at the increased magnificationlevel. The percentage of the display area that would be occupied by thetoolbar/UI at the increased magnification level may be determined andcompared with the threshold to evaluate whether displaying thetoolbar/UI at the increased magnification level would exceed thethreshold.

In embodiments in which the magnification level of the toolbar/UI isindependent of the magnification level for the rest of the visualcontent, the AT software application may not permit the user to adjustthe magnification level for the toolbar/UI beyond a level at which thetoolbar/UI would occupy more than the threshold percentage of thedisplay area. In embodiments in which the toolbar/UI does not have anindependent magnification level, but is magnified at the same level asthe rest of the visual content of the desktop, the AT software maypermit the user to specify a magnification level that is beyond thelevel at which the toolbar/UI would occupy more than the thresholdpercentage, but when the magnification level is set to a level at whichthe toolbar/UI would occupy more than the threshold percentage of thedisplay area, the AT software may not magnify the toolbar/UI at thespecified level. That is, when the specified magnification level is alevel at which the toolbar/UI would occupy more than the thresholdpercentage of the display area, the toolbar/UI may be magnified at themaximum level at which the toolbar/UI may be magnified without exceedingthe threshold percentage of the display area, while the remainder of thevisual content is magnified a the specified level.

The inventors have recognized that, in some situations, when thetoolbar/UI is magnified, the entire toolbar/UI may not fit in portion302 of display 105. That is, for example, when portion 302 is at the topof display 105, the height of portion 302 is adjusted to accommodate themagnified toolbar/UI. For example, as shown in FIG. 5A, toolbar/UI 501may have five controls (503 a-503 e) and may be displayed at 2×magnification in portion 302 of display 105. FIG. 5B shows display 105after magnification level of toolbar/UI 501 has been increased to 4×(i.e., without adjusting the magnification level of the remainder of thevisual content on the desktop). As can be seen in FIG. 5B, the height ofportion 302 of display 105 has been doubled (thereby decreasing the sizeof portion 304) to accommodate the increased height of toolbar/UI 501,but the width of portion 302 has not been increased because the width ofportion 302 in FIG. 5A already occupies the entire width of display 105.As a result, at 4× magnification, the entire width of the toolbar/UIdoes not fit on display 105. As such, only controls 503 a and 503 b, anda portion of control 503 c are displayed on display 105 and controls 503d, 503 e, and a portion of control 503 c are not displayed. As themagnification level of the toolbar/UI increases, an increasingly smallerportion of the width of toolbar/UI may be displayed on display 105.

The inventors have recognized that, when the magnification of thetoolbar/UI is increased such that some portion of the toolbar does notfit in portion 302, it may be desirable to reconfigure the toolbar/UIsuch that the entire toolbar/UI fits in portion 302. As used herein,reconfiguring the toolbar refers to changing the number of controls orthe layout of controls displayed on the toolbar/UI. For example, in someembodiments, the number of controls displayed on the toolbar may bereduced, such that the entire toolbar/UI fits in portion 302. As shownin FIG. 5C, because at 4× magnification, only two of the five controlsof toolbar/UI 501 fully fit in portion 302, the toolbar/UI may bereconfigured such that only two of the five controls are displayed. Ascroll control 505 may be added to the toolbar/UI that when selected,scrolls the controls 503 that are present in the toolbar/UI. Thisenables a user to access the controls that are not initially displayedin the reconfigured toolbar/UI. For example, FIG. 5D shows toolbar/UI501 after scroll control 505 has been selected. As shown in FIG. 5D,control 503 a has been scrolled off toolbar/UI 501 and control 503 d hasbeen scrolled on.

When a toolbar/UI is reconfigured to fit in portion 302 of display 105,the determination as to which controls to initially display on thereconfigured toolbar and which controls to remove may be made in anysuitable way. In the example of FIG. 5C, controls 503 a and 503 c arekept and controls 503 b, 503 d, and 503 e are removed (though they maybe accessed using scroll control 505). In some embodiments, thedetermination as to which controls to keep and which controls to removemay be made based on which controls are most frequently used. Thus, forexample, controls that are most frequently used may be kept on thereconfigured toolbar/UI and controls that are less frequently used maybe removed.

FIG. 6 is a flowchart of process that may be performed by an AT softwareapplication, in some embodiments, to render a toolbar/UI for the ATsoftware application on a display in the manner discussed above. Theprocess begins at act 601, where the AT software application determinesif an indication to render the toolbar/UI has been received. Any numberof possible user actions may be treated as indication to render thetoolbar/UI. For example, a user keyboard input of a particular hotkeycombination (e.g., “CTRL+SHIFT+U”), selection of a particular desktopicon for the AT software application, selection of a menu itemcorresponding to the AT software application, and/or selection oftaskbar icon corresponding to the AT software application may beconsidered indications to render the toolbar/UI.

If, at act 601, it is determined that no indication to render thetoolbar/UI has been received, the process continues to wait for anindication to render the toolbar/UI. If, however, it is determined atact 601 that an indication to render the toolbar/UI has been received,the process continues to act 603, where the toolbar/UI is rendered in afirst portion of the display area of the display device and viewportcontent from the desktop is rendered in a second portion of the displayarea (e.g., in the manner described above in connection with FIGS.3A-3I). A variety of different techniques for displaying the toolbar/UIin a first portion of the display and viewport content from the desktopin a second portion of the display may be used, and various embodimentsof the invention may use various techniques. Examples of some techniquesfor accomplishing this, which may be used in some embodiments, arediscussed below in greater detail in connection with FIG. 7.

After act 603, the process continues to act 605, where the AT softwareapplication determines if an indication to remove the toolbar/UI hasbeen received. Any number of possible user actions may be treated asindication to remove the toolbar/UI. For example, a user may explicitlyindicate that he or she desires that the toolbar/UI be removed byselecting a “close” button or control on the toolbar/UI and/or inputtinga particular keyboard key, key sequence, or hotkey combination. In someembodiment, other user actions may additionally be treated as anindication to remove the toolbar. For example, a user shifting focusfrom the toolbar back to an application program or other object in thedesktop and/or a user accessing a certain a control in the toolbar/UImay be treated as an indication to remove the toolbar from the display.

If, at act 605, it is determined that no indication to remove thetoolbar is received, the process continues to wait for an indication toremove the toolbar/UI. If, however, it is determined at act 605 that anindication to remove the toolbar/UI is received, the process continuesto act 607, where the toolbar/UI is removed from the display and thevisual content of the viewport is displayed on the entire display area.After act 607, the process returns to act 601.

FIG. 7 is a block diagram of a computer 702, coupled to a display device105, that may be configured to enhance a portion of visual content fordisplay on display device 105. Computer 702 may be any suitable type ofcomputer, such as, for example, a laptop personal computer, a desktoppersonal computer, a server computer, a smart-phone, a PDA, a thinclient, or a “dumb terminal.” Similarly, display device 105 may be anysuitable display device, such as a computer monitor, a television, aprojector, or any other type of display device or display screen.

Computer 702 may be implemented using any suitable combination ofhardware and software. In the example of FIG. 7, computer 702 includeshardware 706, such as one or more CPU(s) 708 and computer memory 710.CPU(s) 708 may be of any suitable number and instruction architecture,including, for example, RISC, CISC, ARM, or Atom. Computer memory 710may be any suitable type of tangible volatile or non-volatile datastorage, including RAM, ROM, flash memory, hard disk, magnetic disk,optical disk, another type of tangible data storage medium, or anysuitable combination thereof.

Computer 702 may also store software, such as operating system 712 anduser applications 714 in memory 710. While the operating system 712 andthe user applications 714 are illustrated as being separate fromcomputer memory 710, they may be stored in any suitable executable formin computer memory 710, and may be stored in different types of memorydepending on their current execution state.

Operating system 712 may execute on hardware 706, and may be anysuitable operating system, such as a variant of Microsoft Windows™, MacOS X, Linux, UNIX, operating systems intended for mobile or embeddeddevices, or any other suitable operating system. User Applications 714may execute on hardware 706 through interfaces provided by operatingsystem 712. Applications 714 may include an Accessibility Technologies(AT) software application 716, and/or any suitable other types of userapplications, such as, for example, web browser 718 and word processor720. Of course, the embodiments described herein do not require thatother applications, such as a web browser and word processor, bepresent.

Included in operating system 712 may be a window manager 722, which maymanage the composition and rendering of windows on a computer desktop.Window manager 722 may be implemented in any suitable way and mayexecute in either kernel or user space. Operating system 712 may alsoinclude one or more display driver(s) 724 corresponding to the displaydevice 105. Computer 702 may also include an AT driver 726, which mayoperate in connection with the AT application to provide enhancements ina viewport displayed on the display device. While AT driver 726 isillustrated as a component of operating system 712, in some embodiments,AT driver726 may be installed separately from the operating system andmay be a part of AT software application 726, but may execute in kerneladdress space with other operating system components. Window manager 722and AT driver 726 are illustrated as having dashed borders to signifythat they may not be included in some embodiments, depending on thespecific technique of performing viewport enhancements.

FIG. 7 illustrates several buffers, including redirection buffer 728,composition buffer 730, and toolbar rendering buffer 738 that have beenallocated from computer memory 710. While these are illustrated as beingseparate memory buffers, some embodiments may use a single buffer in theplace of redirection buffer 728 and composition buffer 730. Redirectionbuffer 728 and composition buffer 730 may be accessible from either orboth of kernel address space and a user address space. They may also beaccessible from components of operating system 712, a userapplication(e.g., AT application 716), or any combination thereof. Asdiscussed in greater detail below, buffers 728, 730, 738 may be used indisplaying enhanced visual content from the desktop and the toolbar/UIon display 105.

Connected to the computer 702 may also be one or more input device(s)732, which may be any suitable input device, such as a mouse, keyboard,stylus, microphone, pointing device, or touch screen, or any suitablecombination thereof. Input device(s) 732 may be integrated in the sameenclosure as computer 702 or may be external to but otherwise coupled tocomputer 702 (e.g., via a wired or wireless connection).

Display device 105 may also include a memory buffer internal to thedisplay device, illustrated in FIG. 7 as screen buffer 734. The screenbuffer (also sometimes referred to as a “frame buffer”) may beaccessible (e.g., through memory mapping) to components in operatingsystem 712 or to a user application, such as AT application 716. Thecontents stored in screen buffer 734 may correspond to the actualcontents displayed on display device 105.

As discussed above, computer 702 may be configured to enhance a viewportof the computer desktop, such as by performing magnification of thevisual content in the viewport, and to display the enhanced viewport ondisplay device 105. Accordingly, AT application 716 may store viewportsettings 736 (e.g., in memory 710). The viewport settings 736 mayinclude, for example, current viewport coordinates that define thecurrent viewport boundary, current magnification level of the viewport,and other viewport enhancement settings. AT application 716 may alsostore (e.g., in memory 710) toolbar/UI settings 740, which may include,configuration settings particular to the display of the toolbar/UI,including for example a magnification level for the toolbar/UI, thelocation on the display at which to render the toolbar/UI (e.g., top,bottom, left, or right), and/or any other suitable settings.

When AT software, such as AT software application 716 and/or AT driver726 is not being used to display visual content or display a toolbar/UIon display 105, an application, such as one of user applications 714,desiring to display visual content on display device 105 may typicallydo so using an interface provided by operating system 712. Uponreceiving the instruction through the interface to display visualcontent, depending on the specific operating system configuration, theoperating system 712 may in some configurations copy the visual contentdirectly to screen buffer 734, thereby displaying the content on thedisplay device 105. In other operating system configurations, uponreceiving the instruction through the interface, the operating system712 may first write the visual content in a buffer, sometimes known as a“back buffer.” A component, such as window manager 722, of operatingsystem 712, may perform transformations on the visual content in theback buffer, such as applying translucent or transparent effects, andthen copy the data from the back buffer to screen buffer 734, whichallows display device 105 to display the visual content.

According to some embodiments, when AT software is configured to enhancea portion of visual content before displaying that enhanced visualcontent on display device 105, the portion of the visual content mayfirst be enhanced by the AT software before the operating system copiesthe content to the back buffer or screen buffer 734. In someembodiments, upon receiving through the interface the instruction todisplay visual content from one of user applications 714, the operatingsystem 712 be caused to copy the visual content to redirection buffer728 rather than to the back buffer or to screen buffer 734.

In some embodiments, the AT software may then copy the portion of thevisual content that is configured to be enhanced from redirection buffer728 to composition buffer 730 and enhance the content, such as, forexample, through magnification, although the AT software need not applyany enhancement to the visual content. The enhancement may be performedbefore the content is copied from the redirection buffer to thecomposition buffer, after the content is copied from the redirectionbuffer to the composition buffer, or the copying and enhancement may beperformed simultaneously or near simultaneously. Alternatively, thevisual content may be enhanced while it is in redirection buffer 728 andcopied to composition buffer 730 after the enhancements have beenapplied, or the copying and enhancements may be performedsimultaneously. Visual content from redirection buffer 728 may be copiedto composition buffer 730 and enhanced at periodic intervals or as theresult of a notification that visual content in redirection buffer 728has changed. Moreover, it should be appreciated that some embodimentsmay not use a separate redirection buffer and composition buffer. Forexample, in some embodiments, the visual content may be enhanceddirectly in redirection buffer 728. The actual enhancement processingmay be carried out in any suitable way, including by any suitablecombination of hardware or software. In some embodiments, theenhancement may be performed by AT driver 726 and/or AT application 716.The enhancement may alternatively or additionally be performed indedicated hardware, such as in a graphics processing unit in hardware706. Such dedicated graphics processing hardware may be accessible tocomputer 702 in any suitable way. For example, the dedicated hardwaremay be integrated on a system board of computer 702 (e.g.,“motherboard”) or it may be on a separate circuit board such as agraphics adapter card that is electrically coupled to the system board.

Regardless of the specific manner in which the enhancement processing isperformed, the AT software may instruct operating system 712 to copy theenhanced visual content in composition buffer 730 to screen buffer 734for display onto display device 105. This may be done in any suitableway. For example, in some embodiments, the AT software may issue afunction call to display driver 724 to have it copy the visual contentfrom composition buffer 730 to screen buffer 734. In other embodiments,composition buffer 730 may actually be the “back buffer,” discussedabove. In such embodiments, the AT software may issue an instructionthrough an interface with a component of operating system 712, such aswindow manager 722 or a DirectX component, to inform the operatingsystem that the visual content is to be displayed on display device 105.In some embodiments, window manager 722 may then optionally applytransformations (e.g., transparency effects, etc.) to the visual contentin composition buffer 730 (which may also be the back buffer). After anyoptional transformations have been performed, window manager 722 maythen copy the contents of composition buffer 730 to screen buffer 734 toallow the visual content to be displayed on display device 734. While inthe discussion above, the AT software is described as performingenhancements on the visual content prior to any optional transformationsbeing applied by window manager 722, it should be appreciated thatwindow manager 722 may apply transformations to the visual content incomposition buffer 730 either before or after the AT software enhancesthe content in the composition buffer 730. For example, enhancementsperformed by the window manager may be performed on the content that iswritten into the redirection buffer, prior to that content being copiedto the composition buffer.

After any enhancements and optional transformations have been performed,window manager 722 may then copy the contents of composition buffer 730to screen buffer 734 to allow the visual content to be displayed ondisplay device 734.

When the AT software receives an indication to render the toolbar/UI(e.g., at act 601 of FIG. 6), AT software may render the toolbar/UIimage into toolbar rendering buffer 738 at the magnification levelspecified in toolbar/UI settings 740. If the appearance of the toolbaris to change (e.g., in response to a user adjusting the toolbar/UImagnification level or position, or in response to AT softwarereconfiguring the toolbar), the AT software may detect that such achange is to occur and re-draw the toolbar/UI image into toolbarrendering buffer 738.

In some embodiments, when the toolbar/UI is to be displayed on display105, rather than causing content to be displayed by copying the visualcontent from redirection buffer 728 to composition buffer 730, applyingenhancements (e.g., magnification, color scheme enhancements, cursorenhancements, and/or other types of enhancements) to the content incomposition buffer 730, and then copying the composition buffer 730 toscreen buffer 734, content from both redirection buffer 728 and toolbarrendering buffer 738 may be copied to composition buffer 730 beforecopying composition buffer 730 to screen buffer 734. That is, in someembodiments, when the toolbar/UI is to be rendered on the display, theAT software may determine how much of the display area of display 105the rendered toolbar/UI image would occupy and determines where on thedisplay (e.g., top, bottom, left, or right), the toolbar/UI is to bepositioned. The AT software may render the toolbar/UI image in toolbarrendering buffer 738, as discussed above.

Based on the size and position of the toolbar/UI, the AT software maydetermine the portion of the display area of display device 105 that isto be occupied by the toolbar/UI. As discussed above, the portion of thedisplay area that is to be occupied by the toolbar/UI is shown asportion 302 in FIGS. 3C-3F. The AT software may determine the portion ofcomposition buffer 730 that corresponds to the determined portion of thedisplay area, and toolbar rendering buffer 738 may then be copied intothis portion of composition buffer 730. The AT software may thendetermine how much of the display area is left unoccupied by thetoolbar/UI. This remaining portion of the display area is shown asportion 304 in FIGS. 3C-3F.

The AT software may determine how much of the visual content of thecurrent viewport may be displayed in the remaining display area, and maythen access the visual content corresponding to the current viewportfrom redirection buffer 728, adjust the size of the viewport and/or themagnification level so that the desired desktop content fits in theremaining display area on the display, and copy the remaining visualcontent into the portion composition buffer 730 that corresponds to theremaining display area. The AT software may apply any user-specifiedenhancements to the portion of the visual content that is copied intocomposition buffer 730, though it is not necessary that any enhancementsbe applied, as the visual content of the desktop may be displayed inportion 304 of the display without any enhancements. Composition buffer730 may then be copied to screen buffer 734, causing the contents ofcomposition buffer 730, which includes both the toolbar/UI and thedesktop visual content, to be displayed on display 105.

The above-described embodiments of the present invention can beimplemented in any of numerous ways. For example, the embodiments may beimplemented using hardware, software or a combination thereof. Whenimplemented in software, the software code can be executed on anysuitable processor or collection of processors, whether provided in asingle computer or distributed among multiple computers.

Further, it should be appreciated that a computer may be embodied in anyof a number of forms, such as a rack-mounted computer, a desktopcomputer, a laptop computer, a game console, or a tablet computer.Additionally, a computer may be embedded in a device not generallyregarded as a computer but with suitable processing capabilities,including a Personal Digital Assistant (PDA), a smart phone or any othersuitable portable or fixed electronic device.

Also, a computer may have one or more input and output devices. Thesedevices can be used, among other things, to present a user interface.Examples of output devices that can be used to provide a user interfaceinclude printers or display screens for visual presentation of outputand speakers or other sound generating devices for audible presentationof output. Examples of input devices that can be used for a userinterface include keyboards, and pointing devices, such as mice, touchpads, and digitizing tablets. As another example, a computer may receiveinput information through speech recognition or in other audible format.In embodiments in which the computer is a game console, the input devicemay be a game pad or other game controller.

Such computers may be interconnected by one or more networks in anysuitable form, including as a local area network or a wide area network,such as an enterprise network or the Internet. Such networks may bebased on any suitable technology and may operate according to anysuitable protocol and may include wireless networks, wired networks orfiber optic networks.

Also, the various methods or processes outlined herein may be coded assoftware that is executable on one or more processors that employ anyone of a variety of operating systems or platforms. Additionally, suchsoftware may be written using any of a number of suitable programminglanguages and/or programming or scripting tools, and also may becompiled as executable machine language code or intermediate code thatis executed on a framework or virtual machine.

In this respect, the invention may be embodied as a computer readablemedium (or multiple computer readable media) (e.g., a computer memory,one or more floppy discs, compact discs, optical discs, magnetic tapes,flash memories, circuit configurations in Field Programmable Gate Arraysor other semiconductor devices, or other non-transitory, tangiblecomputer storage medium) encoded with one or more programs that, whenexecuted on one or more computers or other processors, perform methodsthat implement the various embodiments of the invention discussed above.The computer readable medium or media can be transportable, such thatthe program or programs stored thereon can be loaded onto one or moredifferent computers or other processors to implement various aspects ofthe present invention as discussed above.

The terms “program” or “software” are used herein in a generic sense torefer to any type of computer code or set of computer-executableinstructions that can be employed to program a computer or otherprocessor to implement various aspects of the present invention asdiscussed above. Additionally, it should be appreciated that accordingto one aspect of this embodiment, one or more computer programs thatwhen executed perform methods of the present invention need not resideon a single computer or processor, but may be distributed in a modularfashion amongst a number of different computers or processors toimplement various aspects of the present invention.

Computer-executable instructions may be in many forms, such as programmodules, executed by one or more computers or other devices. Generally,program modules include routines, programs, objects, components, datastructures, etc. that perform particular tasks or implement particularabstract data types. Typically the functionality of the program modulesmay be combined or distributed as desired in various embodiments.

Also, data structures may be stored in computer-readable media in anysuitable form. For simplicity of illustration, data structures may beshown to have fields that are related through location in the datastructure. Such relationships may likewise be achieved by assigningstorage for the fields with locations in a computer-readable medium thatconveys relationship between the fields. However, any suitable mechanismmay be used to establish a relationship between information in fields ofa data structure, including through the use of pointers, tags or othermechanisms that establish relationship between data elements.

Various aspects of the present invention may be used alone, incombination, or in a variety of arrangements not specifically discussedin the embodiments described in the foregoing and is therefore notlimited in its application to the details and arrangement of componentsset forth in the foregoing description or illustrated in the drawings.For example, aspects described in one embodiment may be combined in anymanner with aspects described in other embodiments.

Also, the invention may be embodied as a method, of which an example hasbeen provided. The acts performed as part of the method may be orderedin any suitable way. Accordingly, embodiments may be constructed inwhich acts are performed in an order different than illustrated, whichmay include performing some acts simultaneously, even though shown assequential acts in illustrative embodiments.

Use of ordinal terms such as “first,” “second,” “third,” etc., in theclaims to modify a claim element does not by itself connote anypriority, precedence, or order of one claim element over another or thetemporal order in which acts of a method are performed, but are usedmerely as labels to distinguish one claim element having a certain namefrom another element having a same name (but for use of the ordinalterm) to distinguish the claim elements.

Also, the phraseology and terminology used herein is for the purpose ofdescription and should not be regarded as limiting. The use of“including,” “comprising,” or “having,” “containing,” “involving,” andvariations thereof herein, is meant to encompass the items listedthereafter and equivalents thereof as well as additional items.

What is claimed is:
 1. In a computer that has at least one hardwareprocessor and at least one tangible memory coupled to the at least onehardware processor, wherein the tangible memory stores computerinstructions for an application program, wherein the at least onehardware processor is configured to execute the computer instructionsfor the application program, and wherein the computer is configured todisplay a computer desktop on a display device that has a display areaand is coupled to the computer, a method of displaying a user interfacefor the application program on the display device, the methodcomprising: displaying a viewport of the computer desktop on the displayarea of the display device while the display area is unpartitioned;receiving an indication to display the user interface on the displaydevice; in response to receiving the indication: partitioning thedisplay area into a first display portion that is dedicated fordisplaying the user interface and a second display portion fordisplaying the viewport of the computer desktop; displaying at least aportion of the user interface in the first display portion of thedisplay area; reducing the viewport in size to create a reduced-sizeviewport of the computer desktop that fits in the second display portionof the display area; and displaying the reduced-size viewport of thecomputer desktop in the second display portion of the display area, suchthat the user interface is not overlaid on the reduced-size viewport ofthe computer desktop; providing in the user interface a plurality ofcontrols, at least some of which are configured to control at least oneaspect of the appearance of the reduced-size viewport of the computerdesktop displayed in the second display portion of the display area; andin response to an instruction to set a magnification level of thecomputer desktop displayed in the second display portion of the displayarea: if matching a magnification level of the user interface to themagnification level of the computer desktop would not cause the firstdisplay portion to occupy more than a threshold amount of the displayarea, then sizing the first display portion to accommodate the userinterface matched to the magnification level of the computer desktop;and if matching the magnification level of the user interface to themagnification level of the computer desktop would cause the firstdisplay portion to occupy more than the threshold amount of the displayarea, then limiting the first display portion to the threshold amount ofthe display area by not matching the magnification level of the userinterface to the magnification level of the computer desktop.
 2. Themethod of claim 1, wherein the viewport of the computer desktopdisplayed while the display area is unpartitioned comprises the entirecomputer desktop.
 3. The method of claim 1, wherein the viewport of thecomputer desktop displayed while the display area is unpartitionedcomprises a subsection of the computer desktop that is magnified by theapplication program so that it occupies the unpartitioned display area.4. The method of claim 1, wherein providing the plurality of controlscomprises: providing a first control in the user interface via which auser may adjust a magnification level at which the computer desktop isto be displayed; and providing a second control in the user interfacevia which a user may adjust a magnification level at which the userinterface is to be displayed independently of the magnification level atwhich the computer desktop is displayed.
 5. The method of claim 4,wherein the second control defines a maximum magnification level atwhich the user interface is to be displayed, and wherein the maximummagnification level is a magnification level at which the user interfaceoccupies a threshold percentage of the display area.
 6. The method ofclaim 4, further comprising: in response to user input via the secondcontrol that specifies an increased magnification level at which theuser interface is to be displayed, determining whether displaying theuser interface at the increased magnification level would cause thedisplayed user interface to extend outside the display area; and when itis determined that displaying the user interface at the increasedmagnification level would cause the displayed user interface to extendoutside of the display area, reconfiguring the user interface to fit inthe display area.
 7. The method of claim 6, wherein reconfiguring theuser interface to fit in the display area comprises displaying less thanall of the plurality of controls in the first display portion of thedisplay area.
 8. The method of claim 1, further comprising: in responseto user input, adjusting the reduced-size viewport of the computerdesktop displayed in the second display portion of the display area tochange which portion of the computer desktop is displayed in thereduced-size viewport.
 9. The method of claim 1, wherein the pluralityof controls comprises at least one control that controls a magnificationlevel of the reduced-size viewport of the computer desktop displayed inthe second display portion of the display area.
 10. The method of claim1, wherein the plurality of controls comprises at least one control thatcontrols color enhancements applied to the reduced-size viewport of thecomputer desktop displayed in the second display portion of the displayarea.
 11. The method of claim 1, wherein providing the plurality ofcontrols comprises: providing a first control in the user interface viawhich a user may adjust color enhancements to be applied to thedisplayed computer desktop; and providing a second control in the userinterface via which a user may adjust color enhancements to be appliedto the user interface independently of the color enhancements to beapplied to the computer desktop.
 12. The method of claim 1, furthercomprising: continuing to display the at least a portion of the userinterface in the first display portion of the display area during userinput directed to the reduced-size viewport of the computer desktop inthe second display portion of the display area.
 13. At least onenon-transitory computer readable storage medium encoded withinstructions that, when executed by a computer that is configured todisplay a computer desktop, perform a method of displaying a userinterface for an application program on a display device that is coupledto the computer and has a display area, the method comprising:displaying a viewport of the computer desktop on the display area of thedisplay device while the display area is unpartitioned; receiving anindication to display the user interface on the display device; inresponse to receiving the indication: partitioning the display area intoa first display portion that is dedicated for displaying the userinterface and a second display portion for displaying the viewport ofthe computer desktop; displaying at least a portion of the userinterface in the first display portion of the display area; reducing theviewport in size to create a reduced-size viewport of the computerdesktop that fits in the second display portion of the display area; anddisplaying the reduced-size viewport of the computer desktop in thesecond display portion of the display area, such that the user interfaceis not overlaid on the reduced-size viewport of the computer desktop;providing in the user interface a plurality of controls, at least someof which are configured to control at least one aspect of the appearanceof the reduced-size viewport of the computer desktop displayed in thesecond display portion of the display area; and in response to aninstruction to set a magnification level of the computer desktopdisplayed in the second display portion of the display area: if matchinga magnification level of the user interface to the magnification levelof the computer desktop would not cause the first display portion tooccupy more than a threshold amount of the display area, then sizing thefirst display portion to accommodate the user interface matched to themagnification level of the computer desktop; and if matching themagnification level of the user interface to the magnification level ofthe computer desktop would cause the first display portion to occupymore than the threshold amount of the display area, then limiting thefirst display portion to the threshold amount of the display area by notmatching the magnification level of the user interface to themagnification level of the computer desktop.
 14. The at least onenon-transitory computer readable storage medium of claim 13, wherein theviewport of the computer desktop displayed while the display area isunpartitioned comprises the entire computer desktop.
 15. The at leastone non-transitory computer readable storage medium of claim 13, whereinthe viewport of the computer desktop displayed while the display area isunpartitioned comprises a subsection of the computer desktop that ismagnified by the application program so that it occupies theunpartitioned display area.
 16. The at least one non-transitory computerreadable storage medium of claim 13, wherein providing the plurality ofcontrols comprises: providing a first control in the user interface viawhich a user may adjust a magnification level at which the computerdesktop is to be displayed; and providing a second control in the userinterface via which a user may adjust a magnification level at which theuser interface is to be displayed independently of the magnificationlevel at which the computer desktop is displayed.
 17. The at least onenon-transitory computer readable storage medium of claim 16, wherein thesecond control defines a maximum magnification level at which the userinterface is to be displayed, and wherein the maximum magnificationlevel is a magnification level at which the user interface occupies athreshold percentage of the display area.
 18. The at least onenon-transitory computer readable storage medium of claim 16, wherein themethod further comprises: in response to user input via the secondcontrol that specifies an increased magnification level at which theuser interface is to be displayed, determining whether displaying theuser interface at the increased magnification level would cause thedisplayed user interface to extend outside the display area; and when itis determined that displaying the user interface at the increasedmagnification level would cause the displayed user interface to extendoutside of the display area, reconfiguring the user interface to fit inthe display area.
 19. The at least one non-transitory computer readablestorage medium of claim 18, wherein reconfiguring the user interface tofit in the display area comprises displaying less than all of theplurality of controls in the first display portion of the display area.20. The at least one non-transitory computer readable storage medium ofclaim 13, wherein the method further comprises: in response to userinput, adjusting the reduced-size viewport of the computer desktopdisplayed in the second display portion of the display area to changewhich portion of the computer desktop is displayed in the reduced-sizeviewport.
 21. The at least one non-transitory computer readable storagemedium of claim 13, wherein the plurality of controls comprises at leastone control that controls a magnification level of the reduced-sizeviewport of the computer desktop displayed in the second display portionof the display area.
 22. The at least one non-transitory computerreadable storage medium of claim 13, wherein the plurality of controlscomprises at least one control that controls color enhancements appliedto reduced-size viewport of the computer desktop displayed in the seconddisplay portion of the display area.
 23. The at least one non-transitorycomputer readable storage medium of claim 13, wherein providing theplurality of controls comprises: providing a first control in the userinterface via which a user may adjust color enhancements to be appliedto the displayed computer desktop; and providing a second control in theuser interface via which a user may adjust color enhancements to beapplied to the user interface independently of the color enhancements tobe applied to the computer desktop.
 24. The at least one non-transitorycomputer readable storage medium of claim 13, wherein the method furthercomprises: continuing to display the at least a portion of the userinterface in the first display portion of the display area during userinput directed to the reduced-size viewport of the computer desktop inthe second display portion of the display area.
 25. A computerconfigured to display a computer desktop on a display device that has adisplay area, the computer comprising: at least one tangible memory thatstores computer instructions for an application program; and at leastone hardware processor, coupled to the at least one tangible memory,that executes the computer instructions to: display a viewport of thecomputer desktop on the display area of the display device while thedisplay area is unpartitioned; receive an indication to display the userinterface on the display device; in response to receiving theindication: partition the display area into a first display portion thatis dedicated for displaying the user interface and a second displayportion for displaying the viewport of the computer desktop; display atleast a portion of the user interface in the first display portion ofthe display area; reduce the viewport in size to create a reduced-sizeviewport of the computer desktop that fits in the second display portionof the display area; and display the reduced-size viewport of thecomputer desktop in the second display portion of the display area, suchthat the user interface is not overlaid on the reduced-size viewport ofthe computer desktop; provide in the user interface a plurality ofcontrols, at least some of which are configured to control at least oneaspect of the appearance of the reduced-size viewport of the computerdesktop displayed in the second display portion of the display area; andin response to an instruction to set a magnification level of thecomputer desktop displayed in the second display portion of the displayarea: if matching a magnification level of the user interface to themagnification level of the computer desktop would not cause the firstdisplay portion to occupy more than a threshold amount of the displayarea, then sizing the first display portion to accommodate the userinterface matched to the magnification level of the computer desktop;and if matching the magnification level of the user interface to themagnification level of the computer desktop would cause the firstdisplay portion to occupy more than the threshold amount of the displayarea, then limiting the first display portion to the threshold amount ofthe display area by not matching the magnification level of the userinterface to the magnification level of the computer desktop.
 26. Thecomputer of claim 25, wherein the viewport of the computer desktopdisplayed while the display area is unpartitioned comprises the entirecomputer desktop.
 27. The computer of claim 25, wherein the viewport ofthe computer desktop displayed while the display area is unpartitionedcomprises a subsection of the computer desktop that is magnified by theapplication program so that it occupies the unpartitioned display area.28. The computer of claim 25, wherein the at least one hardwareprocessor executes the computer instructions to: provide a first controlin the user interface via which a user may adjust a magnification levelat which the computer desktop is to be displayed; and provide a secondcontrol in the user interface via which a user may adjust amagnification level at which the user interface is to be displayedindependently of the magnification level at which the computer desktopis displayed.
 29. The computer of claim 28, wherein the second controldefines a maximum magnification level at which the user interface is tobe displayed, and wherein the maximum magnification level is amagnification level at which the user interface occupies a thresholdpercentage of the display area.
 30. The computer of claim 28, whereinthe at least one hardware processor executes the computer instructionsto: in response to user input via the second control that specifies anincreased magnification level at which the user interface is to bedisplayed, determine whether displaying the user interface at theincreased magnification level would cause the displayed user interfaceto extend outside the display area; and when it is determined thatdisplaying the user interface at the increased magnification level wouldcause the displayed user interface to extend outside of the displayarea, reconfigure the user interface to fit in the display area.
 31. Thecomputer of claim 30, wherein reconfiguring the user interface to fit inthe display area comprises displaying less than all of the plurality ofcontrols in the first display portion of the display area.
 32. Thecomputer of claim 25, wherein the at least one hardware processorexecutes the computer instructions to: in response to user input, adjustthe reduced-size viewport of the computer desktop displayed in thesecond display portion of the display area to change which portion ofthe computer desktop is displayed in the reduced-size viewport.
 33. Thecomputer of claim 25, wherein the plurality of controls comprises atleast one control that controls a magnification level of thereduced-size viewport of the computer desktop displayed in the seconddisplay portion of the display area.
 34. The computer of claim 25,wherein the plurality of controls comprises at least one control thatcontrols color enhancements applied to the reduced-size viewport of thecomputer desktop displayed in the second display portion of the displayarea.
 35. The computer of claim 25, wherein the at least one hardwareprocessor executes the computer instructions to: provide a first controlin the user interface via which a user may adjust color enhancements tobe applied to the displayed computer desktop; and provide a secondcontrol in the user interface via which a user may adjust colorenhancements to be applied to the user interface independently of thecolor enhancements to be applied to the computer desktop.
 36. Thecomputer of claim 25, wherein the at least one hardware processorexecutes the computer instructions to: continue to display the at leasta portion of the user interface in the first display portion of thedisplay area during user input directed to the reduced-size viewport ofthe computer desktop in the second display portion of the display area.